# !/usr/bin/python3

import smtplib
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import os, sys
from email.mime.text import MIMEText
from email.utils import formataddr
import common.zipTools

my_sender = '2956146708@qq.com'  # 发件人邮箱账号
my_pass = 'zwqzgattimbxddch'  # 发件人邮箱密码
my_user = '2956146708@qq.com'  # 收件人邮箱账号，我这边发送给自己


def mail():
    ret = True
    try:
        mail_msg = ''
        # 打开文件
        path = "../reports/"
        dirs = os.listdir(path)
        filterdirs = [ i for i in dirs if i.endswith('.html') ]
        htmlfile = filterdirs[-1]
        testTime = htmlfile.split(".")[0]
        os.chdir("../reports")
        file = "report.zip"
        common.zipTools.zip(file, [htmlfile])


        #f = open('../report/'+file, "r", encoding='utf-8')
        #mail_msg=f.read()
        # print(mail_msg)
        # msg = MIMEText(mail_msg, 'html', 'utf-8')
        # msg['From'] = formataddr(["FromRunoob", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        # msg['To'] = formataddr(["FK", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        # msg['Subject'] = "菜鸟教程发送邮件测试"  # 邮件的主题，也可以说是标题

        # 创建一个带附件的实例
        message = MIMEMultipart()
        message['From'] = formataddr(["测试服务", my_sender])
        message['To'] = formataddr(["测试", my_user])
        subject = '自动化测试'
        message['Subject'] = Header(subject, 'utf-8')
        # 邮件正文内容
        message.attach(MIMEText('您好，自动化测试结果放附件中', 'plain', 'utf-8'))

        # 构造附件1，传送当前目录下的 test.txt 文件
        att1 = MIMEApplication(open('../reports/'+file, 'rb').read())
        att1["Content-Type"] = 'application/octet-stream'
        # 这里的filename可以任意写，写什么名字，邮件中显示什么名字
        att1["Content-Disposition"] = 'attachment; filename="'+file+'"'
        message.attach(att1)

        server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器，端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender, [my_user, ], message.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接

        os.remove(file)
    except Exception as e:  # 如果 try 中的语句没有执行，则会执行下面的 ret=False
        print(e)
        ret = False
    return ret


ret = mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")
